<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
<!-- 
    前端模块化
    模块，一个js文件就是一个模块
    模块化，将项目中的程序按照功能或业务差分成更小的程序单元
    模块化的作用：方便阅读和维护，独立的作用域，提高复用性，方便团队协作

    JS一直没有模块化规范（ES6之前）
    css -> @import url(xxx.css);
    less -> @import 'xxx.less';

    在开发社区中有几个比较主流的模块化规范
    Commonjs、AMD、CMD等

    Commonjs
    用于后端（nodejs）
    同步加载（按照书写顺序加载执行）

    AMD -> Async Module Definition 异步模块定义
    用于前端
    异步加载
    AMD推崇依赖前置，提前执行
    require.js 是AMD模块化规范最好的实现之一
    require.js 是一个模块载入框架（国外）
    
    CMD -> Common Module Definition 通用模块定义
    用于前端
    异步加载
    CMD推崇依赖就近，延迟执行
    sea.js 是CMD模块化规范最好的实现之一
    sea.js 是一个模块载入框架（国产） 玉伯

    ES模块，ES6之后，在语言标准的层面上，实现了模块化规范
    ES模块完全可以取代Commonjs、AMD、CMD等模块化规范
    
 -->

</body>
</html>